import { createI18n } from 'vue-i18n';

// 定义语言国际化内容

/**
 * 说明：
 * 须在 pages 下新建文件夹（建议 `要国际化界面目录` 与 `i18n 目录` 相同，方便查找），
 * 注意国际化定义的字段，不要与原有的定义字段相同。
 * 1、/src/i18n/lang 下的 ts 为框架的国际化内容
 * 2、/src/i18n/pages 下的 ts 为各界面的国际化内容
 */
// element-plus 国际化文件
import element_zh_cn from 'element-plus/es/locale/lang/zh-cn'
import element_en from 'element-plus/es/locale/lang/en'

// 框架 国际化文件
const zh_cn = import.meta.glob('./lang/**/zh-cn.ts', { eager: true })
const en_us = import.meta.glob('./lang/**/en.ts', { eager: true })

// 加载 lang 文件夹下的国际化
export const loadLang = (modules: Record<string, any>) => {
	const messages: { [key: string]: string } = {}

	Object.keys(modules).forEach(module => {
		Object.assign(messages, { ...modules[module].default })
	})
	return messages
}

export const messages: { [key: string]: any } = {
	'zh-CN': {
		langName: '简体中文',
		...loadLang(zh_cn),
		el: {
			...element_zh_cn
		}
	},
	'en': {
		langName: 'English',
		...loadLang(en_us),
		el: {
			...element_en
		}
	}
}

// 导出语言国际化
export const i18n = createI18n({
	legacy: false, // 是否使用组合式API
	locale: 'zh-CN',
	silentTranslationWarn: true,
	missingWarn: false,
	silentFallbackWarn: true,
	fallbackWarn: false,
	fallbackLocale: element_zh_cn.name,
	messages,
});
